package br.ufrj.ad.evento;

import br.ufrj.ad.As;
import br.ufrj.ad.entidade.Peer;
import br.ufrj.ad.entidade.Rodada;




public abstract class Evento implements Comparable<Evento> {

	double tempo;
	Peer peer;
	Rodada rodada;
	As as;

	public Evento(final double tempo, Peer peer, Rodada rodada, As as) {
		super();
		this.tempo = tempo;
		this.peer = peer;
		this.rodada = rodada;
		this.as = as;
	}
	
	public void processaEvento(Rodada rodadaProximoEvento) {
		proximoEvento(rodadaProximoEvento);
	}

	abstract void proximoEvento(Rodada rodada);
	
	
	@Override
	public int compareTo(Evento o) {
		if (this.tempo < o.tempo) {
			return -1;
		}
		else if (this.tempo > o.tempo) {
			return 1;
		} else {
			return 0;
		}
	}
	
	public double getTempo() {
		return this.tempo;
	}
}
